<?php

/**
 * $Id: Config.class.php 395 2008-05-28 19:41:06Z pawy $
 * Singleton dostepu do danych konfiguracyjnych serwisu
 *
 */
class Config {

	static private $dbConfig;
	static private $internalConfig;
	static private $iniConfig;

	/**
	 * Konstruktor klasy
	 *
	 */
	private function __construct() {

	}

	/**
	 * Zapobiegacz klonowania
	 *
	 */
	private function __clone() {

	}

	/**
	 * Ustawia konfiga z bazy
	 *
	 */
	public static function SetDbConfig($dbConfig) {
		self::$dbConfig = $dbConfig;
	}

	/**
	 * Zwraca wartosc lub wyjatek
	 *
	 */
	public static function Get($value) {
		if (isset(self::$dbConfig[$value])) {
			$return = self::$dbConfig[$value];
		} else if (isset(self::$internalConfig[$value])) {
			$return = self::$internalConfig[$value];
		} else if (isset(self::$iniConfig[$value])) {
			$return = self::$iniConfig[$value];
		} else if (defined($value)) {
			$return = constant($value);
		} else {
			$return = false;
			throw new UserException("Niezdefiniowany parametr konfiguracji: '$value'", $value);
		}
		return $return;
	}

	public static function Exists($value) {
		if (isset(self::$dbConfig[$value]) || isset(self::$internalConfig[$value]) || defined($value)) {
			return true;
		} else {
			$return = false;
		}
	}

	public static function Set($variable, $value) {
		self::$internalConfig[$variable] = $value;
	}

	public static function LoadIniConfig($file, $sections = true) {
		if (is_file($file)) {

			self::$iniConfig = parse_ini_file($file, $sections);
			return true;
		} else {
			return false;
		}
	}

	public static function GetIniConfig() {
		return self::$iniConfig;
	}

}

?>